#include<stdio.h>

#define MAXSIZE 10
/*
顺序队列

*/
typedef int ElementType;
//1.定义数据结构
typedef struct queue{
    //1.数据项
    ElementType data[MAXSIZE];
    //2.两个变量，分别指向队列的首末位置
    int front;//指向第一个元素
    int rear;//指向最后元素的后一个位置

}Queue;
//2.实现方法
//2.1创建空的队列
/*
 创建一个队列，给参数赋初始值
 输入：无 输出：返回队列  函数名：creatQueue()*/
Queue creatQueue(){
    Queue queue;
    queue.front=-1;
    queue.rear=-1;
    return queue;
}

//2.2从尾部进行插入
//先赋值  再移动rear
//特殊情况：1.为空 先移动 2.队列满
/*
 函数名 ：EnQueue()
 输入：队列，元素
 输出：int
*/
int EnQueue(Queue *queue,ElementType data){
    //1.队列已经满
    if(queue->rear==MAXSIZE)
        return 0;
    //2.队列为空
    if(queue->front==queue->rear){
        queue->front=queue->rear=0;
        //插入 先赋值 再移动rear
        /*queue->data[queue->rear]=data;
        queue->rear++;
        return 1;*/
    }
    //队列不为空  先赋值 再移动rear
    queue->data[queue->rear]=data;
    queue->rear++;
    return 1;
}
//2.3从首部进行删除
/*

   删除：front++

   函数名：DeQueue
   输入：队列
   输出：被删除的元素 ElementType

*/
ElementType DeQueue(Queue *queue){
    //队列为空
    if(queue->front==queue->rear){
        printf("队列为空，无法删除\n");
        return -1000;//-1000代表删除不成功
    }else{
        ElementType data =queue->data[queue->front];
        queue->front++;
        return data;
    }

}

int main(){
    //1.创建空队列
    Queue queue=creatQueue();
    //2.插入
    ElementType data;
    for(int i =0;i<5;i++){
        scanf("%d",&data);
        EnQueue(&queue,data);
    }
    //3.删除
    DeQueue(&queue);
    DeQueue(&queue);

    return 0;
}